# Рефакторинг
## Описание
Контролируемый процесс улучшения кода, без написания новой функциональности. Обычно выделяют следующие цели:
- Чистый код
- Простой дизайн
- Уменьшение технического долга

## Почему ветка важна?
Рефакторинг – это прежде всего процесс, которым необходимо заниматься постоянно. Это позволяет не накапливать технический долг до такой степени, что часть системы перестаёт быть управляемой, что в свою очередь приводит к необходимости переписывания с нуля. Чистый код позволяет расширять функциональность максимально быстро и качественно.

Рефакторинг приводит к позитивным изменениям как для членов команды, так и для лида.
Для члена команды:
- Упрощение последующего расширения системы.
- Простота в понимании подробностей реализации.

Для лида:
- Снижение временных рисков при последующем расширении соответствующей части системы.
- Снижение негатива членов команды при работе с кодом.

## Что будет, если её не делать?
Рефакторинг – один из основных способов уменьшения технического долга. Если регулярно не проводить рефакторинг:
- Накопится слишком много технического долга.
  - Как следствие, возможна потеря контроля над частью системы.
- Ощущение постоянной работы в легаси.
  - Влияет на найм и удержание сотрудников.

## На кого может быть делегирована?
Идеальная ситуация: каждый разработчик проводит рефакторинг по ходу решения текущих задач.

## Примеры поведения
### Примеры плохого поведения
- Рефакторинг рассматривается как проект и проводится раз в большой промежуток времени.
- Рефакторинг затрагивает функциональность системы.
- Подходами к рефакторингу обладают не все члены команды.
- Правку багов относят к рефакторингу и используют те же инструменты.

### Примеры хорошего поведения
- По ходу ежедневной работы каждый разработчик переключается между режимами: разработка/рефакторинг.
- Рефакторинг делается при помощи тестов.

## Консультации
- [Telegram-чат TL Bootcamp](https://tlinks.run/tlbootcamp)

## Теория
### Книги
- [Refactoring: Improving the Design of Existing Code, Martin Fowler](https://martinfowler.com/books/refactoring.html)
